package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/** 集合的排序--Point */
public class SortPoint {
    public static void main(String[] args) {
        List<Point> list = new ArrayList<>();
        list.add(new Point(5,8));
        list.add(new Point(15,60));
        list.add(new Point(57,89));
        list.add(new Point(1,4));
        list.add(new Point(10,8));
        list.add(new Point(22,35));
        list.add(new Point(15,8));
        list.add(new Point(4,1));
        System.out.println("list原数据:"+list);

        list.sort(new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                return o1.getX()-o2.getX();
            }
        });
        Collections.sort(list,(o1,o2)-> {
            int len1 = o1.getX() * o1.getX() + o1.getY() * o1.getY();
            int len2 = o2.getX() * o2.getX() + o2.getY() * o2.getY();
            return len2 - len1;
        });

        System.out.println("排序:"+list);







        Collections.sort(list, new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                int len1 = o1.getX()*o1.getX()+o1.getY()*o1.getY();
                int len2 = o2.getX()*o2.getX()+o2.getY()*o2.getY();
                return len1-len2;//升序
                //return len2-len1;//将序
                //return o1.getX()-o2.getX();//按y升序
                //return o1.getY()-o2.getY();//按y升序
                //return o2.getX()-o1.getX();//按x将序
            }
        });
        Collections.sort(list,(o1,o2)->{
            int len1 = o1.getX()*o1.getX()+ o1.getY()*o1.getY();
            int len2 = o2.getX()*o2.getX()+ o2.getY()*o2.getY();
            return len1-len2;
        });
        System.out.println("排序之后:"+list);
    }
}
